PER.rover
Class DriveToAction

java.lang.Object
  extended byPER.rover.DriveToAction
All Implemented Interfaces:
Action, java.io.Serializable

public class DriveToAction
extends java.lang.Object
implements Action

Drives the trikebot a specified distance, after first turning by a set angle (which can be 0).

See Also:
Serialized Form

Field Summary
static byte CYCLE_SAFETY
          The safety level where it will cycle through the specified safety points
static byte NO_SAFETY
          The safety level where no checking is done
static byte STATIC_SAFETY
          The safety level where it will keep the head at pan=0, tilt=-35
 
Constructor Summary
DriveToAction(int fwd)
          Creates a new DriveToAction that moves straight ahead taking pictures with safety on.
DriveToAction(int fwd, int ang, boolean safety)
          Creates a new DriveToAction that takes pictures.
DriveToAction(int fwd, int ang, byte safetyLevel, boolean takePics)
          Creates a new DriveToAction.
 
Method Summary
 boolean doAction(Rover r)
          Tries to start the action.
 long getImageUpdateTime()
          Lets you know when the last image was taken by this action.
 java.awt.image.BufferedImage getRecentImage()
          Returns the most recent image taken by this Action.
 int getReturnValue()
          The return value of the Action.
 java.lang.String getShortSummary()
          Provides a shortened version of the summary returned by getSummary.
 java.lang.String getSummary()
          Provides a textual explanation of the Action, such as "turn 90 degrees"
 int getTime()
          How long the action will take, in milliseconds.
 int getTimeRemaining()
          How much time until the action finishes (in milliseconds), if it has already started.
 boolean isCompleted()
          Whether the action has completed.
 boolean isSuccess()
          Whether the action completed successfully.
 void kill()
          Emergency stop - end the action immediately, if it's running.
 void setAngle(int ang)
          Sets the angle to the given degree (0=straight, 90=left, -90=right).
 void setDistance(int distance)
          Sets the distance to the given cm value and recalculates how long the action will take.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_SAFETY

public static final byte NO_SAFETY
The safety level where no checking is done

See Also:
Constant Field Values

CYCLE_SAFETY

public static final byte CYCLE_SAFETY
The safety level where it will cycle through the specified safety points

See Also:
Constant Field Values

STATIC_SAFETY

public static final byte STATIC_SAFETY
The safety level where it will keep the head at pan=0, tilt=-35

See Also:
Constant Field Values
Constructor Detail

DriveToAction

public DriveToAction(int fwd)
Creates a new DriveToAction that moves straight ahead taking pictures with safety on.

Parameters:
fwd - centimeters to move forward (after rotating)

DriveToAction

public DriveToAction(int fwd,
                     int ang,
                     boolean safety)
Creates a new DriveToAction that takes pictures. Use Rover.receive.getRecentImage() to get the pictures as the robot is driving.

Parameters:
fwd - centimeters to move forward
ang - the angle to drive at (0=straight, 90=left, -90=right)
safety - if true, rover will stop based on the range finder

DriveToAction

public DriveToAction(int fwd,
                     int ang,
                     byte safetyLevel,
                     boolean takePics)
Creates a new DriveToAction. Use Rover.receive.getRecentImage() to get the pictures as the robot is driving.

Parameters:
fwd - centimeters to move forward
ang - the angle to drive at (0=straight, 90=left, -90=right)
safetyLevel - CYCLE_SAFETY, STATIC_SAFETY, or NO_SAFETY
takePics - if true, the rover will take pictures as it drives
Method Detail

setDistance

public void setDistance(int distance)
Sets the distance to the given cm value and recalculates how long the action will take.


setAngle

public void setAngle(int ang)
Sets the angle to the given degree (0=straight, 90=left, -90=right).


doAction

public boolean doAction(Rover r)
Description copied from interface: Action
Tries to start the action. Returns whether the action started.

Specified by:
doAction in interface Action

getTime

public int getTime()
Description copied from interface: Action
How long the action will take, in milliseconds.

Specified by:
getTime in interface Action

getSummary

public java.lang.String getSummary()
Description copied from interface: Action
Provides a textual explanation of the Action, such as "turn 90 degrees"

Specified by:
getSummary in interface Action

getShortSummary

public java.lang.String getShortSummary()
Description copied from interface: Action
Provides a shortened version of the summary returned by getSummary. For example, getSummary may return something like "Turn left and drive about 39 inches toward the red landmark," whereas getShortSummary might just return "Drive toward a landmark."

Specified by:
getShortSummary in interface Action

getReturnValue

public int getReturnValue()
Description copied from interface: Action
The return value of the Action. Zero is a success. Negative implies one of this class's constants. Other values should be interpreted as appropriate.

Specified by:
getReturnValue in interface Action
See Also:
RoverState, ActionConstants

isSuccess

public boolean isSuccess()
Description copied from interface: Action
Whether the action completed successfully. Undefined until isCompleted() returns true.

Specified by:
isSuccess in interface Action

isCompleted

public boolean isCompleted()
Description copied from interface: Action
Whether the action has completed. Undefined until doAction has been called.

Specified by:
isCompleted in interface Action

kill

public void kill()
Description copied from interface: Action
Emergency stop - end the action immediately, if it's running.

Specified by:
kill in interface Action

getTimeRemaining

public int getTimeRemaining()
Description copied from interface: Action
How much time until the action finishes (in milliseconds), if it has already started. Undefined behavior if the action has not yet begun, or has finished.

Specified by:
getTimeRemaining in interface Action

getImageUpdateTime

public long getImageUpdateTime()
Description copied from interface: Action
Lets you know when the last image was taken by this action. If the Action does not take pictures or the first picture has not yet been taken, will return 0.

Specified by:
getImageUpdateTime in interface Action
Returns:
the system time in milliseconds when the last image was taken or 0 if no images have been taken

getRecentImage

public java.awt.image.BufferedImage getRecentImage()
Description copied from interface: Action
Returns the most recent image taken by this Action. The image will be null if the Action does not take pictures or the first picture has not yet been taken.

Specified by:
getRecentImage in interface Action
Returns:
the most recent picture taken by the Action.